"""
网络编程相关介绍：
    概述：
        网络编程也叫套接字编程，Socket编程，即：通信两端都有自己的Socket对象，数据在Socket之间通过文件流或者数据包的形式进行传输
    大白话：
        网编就是用来实现网络互联的在不同计算机上运行的程序间可以进行数据的交互

    网编三要素：
        IP地址：
            概述：
                设备（电脑、手机、Pad，手表..）在网络中的唯一标识。
            分类：
                IPV4：采用的4字节，十进制形式组成。
                IPV6: 采用16字节，十六进制形式组成。
            关于IP的命令：
                ipconfig   查看本机IP地址， windows系统用这个，如果是linux或者max系统，用ifconfig
                ping ip地址  查看网络是否通畅
        端口号：
            概述：
                1个端口 = 一个端口号，端口号是：程序在设备上的唯一标识。
            范围：
                0 - 65535，其中0 - 1023 已经被系统占用，在编写程序的时候尽可能规避这些端口号
            如何查看端口号：
                windows系统：  netstat -ano
                linux系统：    netstat -ano
        协议：
            概述：
                通信的规则，规范
            分类：
                TCP协议，类似于：打电话
                    1：面向连接
                    2：采用IO流（Input/Output）的方式传输数据，理论上来讲，数据没有大小的限制。
                    3：安全（可靠）协议
                    4：效率相对较低
                    5：区分客户端和服务端
                UDP协议，类似于：群聊
                    1：面向无连接。
                    2：采用数据报包（Package）的形式传输数据，每个包大小不能超过64KB
                    3：不安全（不可靠）协议
                    4：效率相对较高
                    5：不区分客户端和服务端，叫：发送端和接收端
    Socket对象创建步骤：
        1：导包
        2：创建Socket对象
        3：关闭，释放资源
"""
# 1：导包
import socket

# 2：创建Socket对象
# 创建一个TCP套接字对象
# socket.AF_INET: 指定使用IPv4地址族
# socket.SOCK_STREAM: 指定使用TCP协议（流式套接字）
cli_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 3: 打印socket对象，确认是否创建成功
print(cli_socket)

# 4：释放资源
cli_socket.close()